#ifndef TEMPER_H
#define TEMPER_H

#include <stdbool.h>

/**
 * @brief 温度传感器错误码定义
 */
typedef enum {
    TEMP_SUCCESS = 0,      // 成功
    TEMP_OPEN_DIR_FAIL = -1, // 打开目录失败
    TEMP_DEVICE_NOT_FOUND = -2, // 未找到设备
    TEMP_OPEN_FILE_FAIL = -3, // 打开设备文件失败
    TEMP_READ_FAIL = -4,    // 读取数据失败
    TEMP_PARSE_FAIL = -5    // 解析数据失败
} TempErrorCode;

/**
 * @brief 湿度传感器错误码定义 
 */
typedef enum {
    HUMID_SUCCESS = 0,     // 成功
    HUMID_OPEN_FAIL = -1,  // 打开设备失败
    HUMID_READ_FAIL = -2   // 读取数据失败
} HumidErrorCode;

/**
 * @brief 获取温度值
 * @param temp 用于存储温度值的指针（单位：摄氏度）
 * @return 成功返回0，失败返回错误码（见TempErrorCode）
 * @note 温度值范围：-40°C ~ 85°C
 */
int get_temperature(float *temp);

/**
 * @brief 获取湿度值
 * @param humidity 用于存储湿度值的指针（单位：百分比）
 * @return 成功返回0，失败返回错误码（见HumidErrorCode）
 * @note 湿度值范围：0% ~ 100%
 */
int get_humidity(float *humidity);

/**
 * @brief 传感器数据打印格式
 * @param timestamp 时间戳字符串（需提前格式化）
 * @param temp 温度值
 * @param humidity 湿度值
 * @param temp_err 温度错误码
 * @param humid_err 湿度错误码
 * @note 示例输出：[2023-08-20 14:30:00] Temperature: 25.5°C | Humidity: 45.0%
 */
void print_sensor_data(const char *timestamp, 
                      float temp, float humidity,
                      int temp_err, int humid_err);

// 设备路径常量（可根据实际设备调整）
#define W1_DEVICE_PATH "/sys/bus/w1/devices/"
#define TEMP_SENSOR_PREFIX "28-"
#define HUMIDITY_SENSOR_FILE "humidity_sensor"

#endif /* TEMPER_H */